import IllegalArgumentException from "../exceptions/IllegalArgumentException";

/**
 * 针对{@link Math#random}的进一步封装。
 *
 * @version 1.0
 */
export default class Random {

  /**
   * 返回一个位于0（含）到100（不含）的整数。
   *
   * @version 1.0
   */
  public static randomInt() {
    return Math.round(Math.random() * 100);
  }

  /**
   * 返回一个位于起始值（含）到结束值（不含）的整数。
   *
   * @param start 起始值（含）
   * @param end 结束值（不含）
   * @return {number}一个位于起始值（含）到结束值（不含）的整数
   * @throws {IllegalArgumentException} 起始值应小于结束值
   * @version 1.0
   */
  public static randomRange(start: number = 0, end: number = 1) {
    if (start >= end) {
      throw new IllegalArgumentException("start value " + start + " should be smaller than end value " + end);
    }
    return Math.random() * (end - start) + start;
  }
}